package com.sg.dto.integration.framework;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc TagDto
 * @使用场景
 */
@Data
public class TagDto extends BaseDto implements Serializable {

    /**
     * 标签ID:
     */
    @ApiModelProperty("标签ID")
    private String tagId;

    /**
     * 标签名称:
     */
    @ApiModelProperty("标签名称")
    private String tagName;

    /**
     * 标签来源方式:
     */
    @ApiModelProperty("标签来源方式")
    private String tagSource;

    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 归属业务场景标识
     */
    @ApiModelProperty("归属业务场景标识")
    private String businessSceneCode;

    /**
     * 是否推荐 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否推荐")
    private String isRecommend;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        TagDto that = (TagDto) o;
        return (
                tagId == that.tagId &&
                        tagName == that.tagName &&
                        tagSource == that.tagSource &&
                        subjectLifeCycle == that.subjectLifeCycle &&
                        operationInductionId == that.operationInductionId &&
                        operateTime == that.operateTime &&
                        businessSceneCode == that.businessSceneCode &&
                        isRecommend == that.isRecommend
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                tagId,
                tagName,
                tagSource,
                subjectLifeCycle,
                operationInductionId,
                operateTime,
                businessSceneCode,
                isRecommend
        );
    }

}
